The continuous expansion of the Internet, the expansion and sophistication of enterprise computing networks and systems, the proliferation of content stored and accessible over the Internet, and numerous other factors continue to drive the need for large sophisticated data storage systems. Consequently, as the demand for data storage continues to increase, larger and more sophisticated storage systems are being designed and deployed. Many large scale data storage systems utilize storage appliances that include arrays of storage media. These storage appliances are capable of storing incredible amounts of data. For example, some storage appliances can store over 2 petabytes of data (over 2 quadrillion bytes of data). Moreover, multiple storage appliances may be networked together to form a cluster, which allows for an increase in the volume of stored data.
Storage appliances typically include a file system configured to store and retrieve files and a hierarchical directory structure for the naming of multiple files. In some instances, data on an existing source file system needs to be migrated to a new target file system. Such a migration is typically achieved by initially taking the source file system offline, thereby preventing users from reading or writing to the source file system, and transferring each directory and file to the target file system. Conventionally, a single thread is utilized to perform migration of a directory or a file, which may take a significant period of time for larger sized directories or files. While employing multiple threads may increase migration speed, the performance gain using multiple threads may be saturated due to the serialization of some migration operations for data integrity. Thus, simply adding additional threads does not equate to increased performance during migration. It is with these observations in mind, among others, that various aspects of the present disclosure were conceived and developed.